package pokpok.dao;

import java.util.List;

import javax.jdo.PersistenceManager;
import javax.jdo.Transaction;

import pokpok.domaine.Joueur;
import pokpok.domaine.Resultat;
import pokpok.domaine.Tournoi;

import com.google.appengine.api.datastore.Key;

public class JoueurDAO extends GenericDAO<Joueur, Key> {

	public JoueurDAO() {
		super();
	}

	public Joueur update(Joueur joueur, Joueur newValue) {
		PersistenceManager pm = getPM();
		Transaction tx = pm.currentTransaction();
		try {
			tx.begin();
			Joueur j = pm.getObjectById(Joueur.class, joueur.getId());
			j.setNom(newValue.getNom());
			j.setPrenom(newValue.getPrenom());
			j.setPseudo(newValue.getPseudo());
			tx.commit();
			return j;
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		} finally {
			if (tx.isActive()) {
				tx.rollback();
			}
			pm.close();
		}
	}

	public Joueur findAdversaire(Joueur j, Tournoi t) {
		ResultatDAO rDAO = new ResultatDAO();
		List<Resultat> resultats = rDAO.findByTournoi(t);
		Joueur adversaire = null;
		for (Resultat resultat : resultats) {
			if (resultat.getKeyJoueur().equals(j.getId())) {
				if (resultat.getPosition() != 1 && resultat.getPosition() != 2) {
					return null;
				}
			} else {
				if (resultat.getPosition() == 1 || resultat.getPosition() == 2) {
					adversaire = resultat.getJoueur();
				}
			}
		}
		return adversaire;
	}

}
